home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 1
/
Atari Mega Archive - Volume 1.iso
/
tex
/
td187src.lzh
/
MTAREA.D
< prev
next >
Wrap
Text File
|
1991-06-08
|
3KB
|
80 lines
DEFINITION MODULE mtArea;
FROM MagicSys IMPORT Nil, Null,
Bit0, Bit1, Bit2, Bit3, Bit4, Bit5, Bit6, Bit7,
Bit8, Bit9, Bit10, Bit11, Bit12, Bit13, Bit14, Bit15,
LOC, Byte, ByteSet, sWORD, sINTEGER, sCARDINAL, sBITSET,
lWORD, lINTEGER, lCARDINAL, lBITSET;
(*-----------------------------------------------------------------------*
* WICHTIG: Rechtecke bestehen PRINZIPIELL aus Koordinate (x, y), *
* Breite (w) und Höhe (h)!!! *
*-----------------------------------------------------------------------*)
TYPE AREA;
PROCEDURE NewAREA (VAR a: AREA): BOOLEAN;
(* Legt neue AREA-Variable an, FALSE wenn nicht gelungen *)
PROCEDURE DisposeAREA (VAR a: AREA);
(* Gibt die AREA-Variable frei, falls noch Bildspeicher alloziert ist,
* wird dieser ebenfalls freigegeben *)
PROCEDURE FreeArea (a: AREA);
(* Gibt den allozierten Bildspeicher frei *)
PROCEDURE SaveArea (a: AREA; rect: ARRAY OF LOC): BOOLEAN;
(* Sichert einen Bildschirmbereich ins RAM. FALSE, wenn nicht genügend
* RAM zur Verfügung stand. Ist bereits ein Bildspeicher alloziert und
* dieser für das zu sichernde Teilstück zu klein, wird dieser freigegeben
* und ein neues Teilsstück alloziert.
*)
PROCEDURE CopyArea (a: AREA; x, y: sINTEGER);
(* Kopiert einen mit SaveArea gespeicherten Bereich an Position x, y *)
PROCEDURE RestoreArea (a: AREA);
(* Blittet einen mit SaveArea gespeicherten Bereich wieder auf die
* Originalposition am Schirm
*)
CONST MOVEUP = 0;
MOVEDOWN = 1;
MOVELEFT = 2;
MOVERIGHT = 3;
PROCEDURE MoveArea (a: AREA; pixel, direction: sINTEGER; VAR x, y: sINTEGER);
(* "Bewegt" einen AREA-Bereich um eine Anzahl Pixel (pixel) in die
* Richtung direction. Dabei wird wie folgend vorgegangen:
*
* MoveArea (area, 5, MOVEUP);
*
* +----------------------------+
* |XXXXXXXXXXXXXXXXXXXXXXXXXXXX|
* +----------------------------+
* | |
* | |
* | |
* | |
* | |
* | |
* | |
* | |
* +----------------------------+
* |****************************|
* +----------------------------+
*
* Zuerst wird die alte Bildschirmfläche (X) im in Frage kommenden Bereich
* wieder hergestellt. Die gesamte Fläche wird intern um 5 Pixel nach unten
* geschoben, die untersten 5 Pixel der Fläche * gehen dabei verloren.
* Anschließend wird vom Bildschirm an der aktuellen Position 5 Pixel-Reihen in
* die oberen Pixel der Fläche (X) kopiert.
*
* In x,y wird die neue Position des Rechtecks geliefert.
*)
END mtArea.